using System;
using DecisionMaking.Domain;
namespace DecisionMaking.BusinessLogic
{
	/// <summary>
	/// Encapsulates a strategy for executing a decision-making algorithm 
	/// </summary>
	public interface IAlgorithm
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="agent">
		/// A <see cref="Agent"/>
		/// </param>
		/// <param name="left">
		/// A <see cref="Candidate"/>
		/// </param>
		/// <param name="right">
		/// A <see cref="Candidate"/>
		/// </param>
		/// <returns>
		/// -1 if left, 1 if right, 0 if cannot decide
		/// </returns>
	    short Execute(Agent agent, Candidate left, Candidate right);
		
		AlgorithmDefinition getDefinition();
	}
}

